package com.czk.type;

import org.objectweb.asm.Type;

/**
 * type获取各种的描述
 *
 * @Author:ChenZhangKun
 * @Date: 2021/8/12 14:09
 */
public class TypeDemo {
    public static void main(String[] args) {
        // 通过descriptor来获取对象
        Type type = Type.getType("Ljava/lang/String;");
        // 方式二，通过class来获取
        Type type1 = Type.getType(String.class);
        // 方式三 通过internal name来获取
        Type type2 = Type.getObjectType("java/lang/String");
        // 方法四 通过方法描述符
        Type type3 = Type.getMethodType("(II)V");
        // 拿到sort
        int sort = type.getSort();
        String className = type.getClassName();
        // classFile内的一种概念
        String internalName = type.getInternalName();
        String descriptor = type.getDescriptor();
        // 输出
        // 10，它对应于Type.OBJECT字段
        System.out.println(sort);
        // java.lang.String   注意，分隔符是“.”
        System.out.println(className);
        // java/lang/String   注意，分隔符是“/”
        System.out.println(internalName);
        // Ljava/lang/String; 注意，分隔符是“/”，前有“L”，后有“;”
        System.out.println(descriptor);
    }
}
